When designing a clone of an integrated circuit chip, it is best to test the design against the original device from which the clone is derived. This helps to identify any discrepancies between the cloned version and the original device, and insures that the cloned version operates in as close as possible functional manner to the device. Such testing is particularly important for central processing units (CPUs) and other complicated devices.
Typically, testing of the two devices (the cloned and original) is performed by creating a system set up which permits both devices to execute operations in parallel, and provides ways of detecting differences in the behavior of the devices. In the case of CPUs, a system can be set up that causes both devices to execute the same program in parallel while detecting any differences between the states of the two CPUs. Such differences can be a discrepancy in the results of the program (based on a memory compare) or a direct difference between the output signals of the devices (a signal compare). Typically, CPUs have the capability to respond to asynchronous external events, and such events are often used during testing of the devices. The most common type of asynchronous external event is an interrupt signal. Other possible external events which may be used for testing include external hold request signals and external bus request signals. In order to fully exercise the testing process for the two devices, it is desirable to have the ability to apply several types of external events to both devices while the devices are under test. Ideally, these external events should occur randomly while the devices are executing a testing program, but should be repeatable to enable debugging of the devices. However, the randomness requirement prohibits the use of standard event or pattern generators for generating test data. In addition to the randomness and repeatability requirements, it is also important that the event generator be capable of generating the events at the high clock speeds of current and planned devices.
What is desired is an apparatus and method for generating random, repeatable events of several types for use in testing the operation of a cloned device against the device from which it is derived. It is also desired that the random event generator be capable of operating at the high speeds necessary to properly simulate the operation of actual devices such as processing units.